#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
#include<vector>
#include<string>

using namespace std;

//const int N = 100010;
//int h[N], cnt;
//int n, m;
//
//void down(int i)
//{
//    int p = i;
//    int child = i * 2 + 1;
//    while (p < cnt)
//    {
//        if (child + 1 < cnt && h[child] > h[child + 1])  child++;
//        if (child < cnt && h[p] > h[child])
//        {
//            swap(h[p], h[child]);
//            p = child;
//            child = p * 2 + 1;
//        }
//        else
//            break;
//    }
//}
//
//int main()
//{
//    cin >> n >> m;
//    for (int i = 0; i < n; i++)  scanf("%d", &h[i]);
//
//    cnt = n;
//    for (int i = (n - 1 - 1) / 2; i >= 0; i--)   down(i);
//
//    while (m--)
//    {
//        cout << h[0] << " ";
//        swap(h[0], h[--cnt]);
//        down(0);
//    }
//    return 0;
//}


const int N = 10;

int num[N];
vector<bool> sta(N, false);
int n;

void dfs(int i)
{
    if (i >= n)
    {
        for (int i = 0; i < n; i++)
            cout << num[i] << " ";
        cout << endl;
        return;
    }

    for (int j = 1; j <= n; j++)
    {
        if (!sta[j])
        {
            num[i] = j;
            sta[j] = true;
            dfs(i + 1);
            sta[j] = false;
        }
    }
}

//int main()
//{
//    cin >> n;
//    dfs(0);
//    return 0;
//}
